package com.soup.hummingbird.module;

import javassist.CtClass;

/**
 * 〈采集接口〉<br>
 *
 * @author zhaoyi
 * @date 2021-04-05 13:46
 * @see [相关类/方法]（可选）
 * @since [产品/模块版本] （可选）
 */
public interface Collect {
    /**
     * 采集目标判断
     * @param className
     * @param loader
     * @param ctclass
     * @return
     */
    boolean isCollectTarget(String className, ClassLoader loader, CtClass ctclass);

    /**
     * 对目标类字节码进行增强
     * @param loader 类加载器
     * @param className 全限定类名
     * @param classfileBuffer 原类字节码信息
     * @param ctclass javassist方式的CtClass信息
     * @return 增强后的字节码信息
     * @throws Exception 转换发生的异常信息
     */
    byte[] transform(ClassLoader loader, String className, byte[] classfileBuffer, CtClass ctclass) throws Exception;
}
